iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
0
Microsoft Azure

Azure 的自我修煉系列 第 17

Day17 實作 Identity ASP.NET Core

  • 分享至 

  • xImage
  •  

實作 簡介 Identity ASP.NET Core

我們有了基本的網站後,再來需要有一些進階功能,
例如驗證(登入)與授權(權限),
ASP.NET Core 安全性概觀裡面有完整說明。

ASP.NET Core 包含管理驗證、授權、資料保護、HTTPS 強制、應用程式秘密、XSRF/CSRF 防護和 CORS 管理的功能

ASP.NET Core 驗證的總覽

驗證是決定使用者身分識別的程式。 授權是判斷使用者是否有權存取資源的程式。

在 ASP.NET Core 中,驗證是由 IAuthenticationService 中介軟體所使用的來處理,
常用的有兩種驗證方式

  1. AddJwtBearer: JWT 持有人配置還原序列化和驗證 JWT 持有人權杖,以建立使用者的身分識別。
  2. AddCookie: cookie從建立使用者身分識別的驗證配置 cookie 。

下列程式碼會註冊的驗證服務和處理常式, cookie 以及 JWT 持有人驗證配置

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options => Configuration.Bind("JwtSettings", options))
    .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options => Configuration.Bind("CookieSettings", options));

ASP.NET Core Identity

  • 是支援使用者介面 (UI) 登入功能的 API。
  • 管理使用者、密碼、設定檔資料、角色、宣告、權杖、電子郵件確認等等。

建立具有驗證的 Web 應用程式

專案名稱: PellokITHomeAccount

dotnet new webapp --auth Individual -o PellokITHomeAccount

執行程式,發現有Register(註冊)與Login(登入)兩個功能
https://localhost:5001/
https://ithelp.ithome.com.tw/upload/images/20200917/20072651D5qmlnocmJ.png

Scaffold Register、Login、登出和 RegisterConfirmation

Identity ASP.NET Core 專案中的 Scaffold

安裝 Microsoft.VisualStudio.Web.CodeGeneration.Design

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design

查看 aspnet-codegenerator 指令

dotnet aspnet-codegenerator -h

https://ithelp.ithome.com.tw/upload/images/20200917/20072651nBihDKeV1M.png

查看 aspnet-codegenerator identity 指令

dotnet aspnet-codegenerator identity -h

https://ithelp.ithome.com.tw/upload/images/20200917/20072651waGW05pNah.png

查看 Files 會發現有超多頁面可以用

dotnet aspnet-codegenerator identity --listFiles

https://ithelp.ithome.com.tw/upload/images/20200917/20072651dbSVuuzigY.png

檔案名稱 說明
Account.Register 註冊頁面
Account.RegisterConfirmation 註冊驗證
Account.Login 登入頁面
Account.Logout 登出功能

產生程式碼,註冊、登入、登出、註冊確認

dbContext: PellokITHomeAccount.Data.ApplicationDbContext
files: Account.Register;Account.Login;Account.Logout;Account.RegisterConfirmation

dotnet aspnet-codegenerator identity -dc PellokITHomeAccount.Data.ApplicationDbContext --files "Account.Register;Account.Login;Account.Logout;Account.RegisterConfirmation"

https://ithelp.ithome.com.tw/upload/images/20200917/20072651kyqMa4emEF.png

遇到: "Please install the following packages to your project for scaffolding identity: Microsoft.EntityFrameworkCore.SqlServer"
https://ithelp.ithome.com.tw/upload/images/20200917/20072651ci7qIaYjiY.png

解決:安裝 Microsoft.EntityFrameworkCore.SqlServer

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

檢查 Areas/Identiry 資料夾,發現有註冊、登入、登出、註冊確認等頁面資料
https://ithelp.ithome.com.tw/upload/images/20200917/20072651frsYmeTGNH.png

登入頁面
https://ithelp.ithome.com.tw/upload/images/20200917/20072651UGQV94A99S.png

官方教學的程式碼解說

建議新手可以實作對照著看
檢查 Register
停用預設帳戶驗證
登入
登出
測驗Identity
看Identity
Identity要素
遷移至 ASP.NET CoreIdentity
設定密碼強度
AddDefault Identity 並新增Identity
防止發行靜態 Identity 資產

最後可以部署到Azure線上玩玩看,
可以參考上一篇Day16 實作官網教學 JavaScript 呼叫 ASP.NET Core web API最後的部署方式。

相關連結:

上一篇 Day16 實作官網教學 JavaScript 呼叫 ASP.NET Core web API
下一篇 Day18 Azure Pipelines服務


上一篇
Day16 實作官網教學 JavaScript 呼叫 ASP.NET Core web API
下一篇
Day18 Azure Pipelines服務
系列文
Azure 的自我修煉30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言